package com.sugon.dao;

import com.sugon.entity.SpecialDevCheckRecordEntity;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.Date;
import java.util.List;

/**
 * 特种设备校验台账单Dao
 *
 * @author sugon
 * @date 2020-12-17 14:16:21
 */
public interface SpecialDevCheckRecordDao extends BaseDao<SpecialDevCheckRecordEntity> {

    /**
     * 查询已达提醒最小天数内未完成的特种设备校验台账记录
     *
     * @param days 最小行天数
     * @return
     */
    List<SpecialDevCheckRecordEntity> queryUnCheckedRecord(@Param("days") int days);

    /**
     * 查询特种设备的校验周期
     *
     * @param tableName 特种设备表的名称
     * @param devId     设备ID
     * @return
     */
    Integer queryCheckInterval(@Param("tableName") String tableName, @Param("devId") String devId);

    /**
     * 查询特种设备校验编号证书对应的校验记录
     *
     * @param certificateNumber
     * @return
     */
    @Select("SELECT COUNT(*) FROM special_dev_check_record WHERE certificate_number = ''")
    int countByCertificateNumber(@Param("certificateNumber") String certificateNumber);

    /**
     * 查询特种设备的校验周期
     *
     * @param tableName 特种设备表的名称
     * @param devId     设备ID
     * @return
     */
    Integer queryBy(@Param("tableName") String tableName, @Param("devId") String devId);

    /**
     * 更新特种设备最近一次校验日期
     *
     * @param tableName         表名
     * @param devId             设备ID
     * @param latestInspectDate 最近一次校验日期
     * @return
     */
    int updateSpecDevCheckRecord(@Param("tableName") String tableName, @Param("devId") String devId, @Param("latestInspectDate") Date latestInspectDate, @Param("inspectReportNo") String inspectReportNo, @Param("currentInspectDate") Date currentInspectDate);

}
